The present invention relates generally to telecommunication systems, and more particularly to the provision of telephony services in such systems.
Many advanced telephony services require the ability to analyze, modify, redirect, duplicate and otherwise manipulate the media streams involved in a given call. Unfortunately, existing programming frameworks provide little or no support for such media control.
Implementing media control for telephony services such as translation, adding participants, side conversations, etc. often requires that the devices involved have certain capabilities, such as sending a given stream to more than one target device, changing the set of target devices to which a given stream is sent over the course of a call, and mixing a number of received streams. However, few real world devices have these capabilities. For example, many PC-based H.323 applications can send an audio stream to only one destination which cannot be changed over the course of a call, and generally cannot mix streams. As another example, most circuit-packet voice gateways can send a packetized audio stream to only one destination, which cannot be changed over the course of a call, and most such gateways cannot mix streams.
Although it is believed that there is no existing device which provides all of the above noted capabilities, a number of partial solutions are known in the art. These include Internet protocol (IP) multicasting, use of a central mixer, and reprogramming.
IP multicasting can be used to send a given IP-transported stream to more than one target device, and to change the set of target devices to which the given stream is sent over the course of a call. The IP multicasting approach is described in greater detail in, e.g., W. Richard Stevens, xe2x80x9cUNIX Network Programming,xe2x80x9d Vol. 1, 2nd Edition Prentice Hall, 1998. More specifically, when a stream is created, one can also create a new multicast group that represents all the intended targets of that stream, and the stream can then be sent to that group. In order to send the stream to a particular device, that device is added to the group. In order to stop sending the stream to the particular device, that device is removed from the group.
Unfortunately, this approach fails to provide a complete media-control solution. One problem is that IP multicasting provides no ability to mix streams. In addition, not all hosts, and very few routers, currently support IP multicasting. Furthermore, in advanced telephony services applications, it is often the sender of a stream that wants to specify who should receive that stream, but IP multicasting entities generally specify those multicast groups that they want to receive. As an example, when a given device A wants to send its media stream to another device B, the device A generally must send a control message to B telling B to join the multicast group corresponding to that stream. This type of xe2x80x9cbackwardsxe2x80x9d protocol is confusing, and there is no guarantee that devices will adhere to it.
Although a central mixer can be used to send a mix of streams to a given device, this approach also fails to provide a complete media-control solution. More particularly, conventional central mixers generally send to each participant in a call the mix of all the other participants, and the mixing function for a given participant cannot be changed.
There are also a number of problems associated with the above noted reprogramming approach. For example, not all real-world devices can be reprogrammed by third parties. In addition, reprogramming all of the devices that can be reprogrammed would be a monumental undertaking, to say nothing of the ongoing maintenance.
As noted previously, existing programming frameworks for telephony services provide insufficient control of media streams. For example, the Parlay framework, as described at http://www.parlay.org, allows a given audio file to be played to a specified endpoint, optionally collecting dual-tone multiple-frequency (DTMF) information during the playing of the audio file. Other frameworks, such as the Advanced Intelligent Network, as described in xe2x80x9cAINGR: Switching Systems,xe2x80x9d Document number GR 1298-CORE, 1998, provide slightly more powerful media control, but in the context of an overall framework that is unduly complex, restrictive, and difficult to use. Another example of a conventional media control framework is the Touring Machine (TM) system, which provides a high-level API that enables the easy creation of a wide range of distributed multimedia applications. However, certain telephony services may be unduly difficult to implement in the TM framework.
Another conventional media control framework is the Distributed Feature Composition (DFC) system described in M. Jackson and P. Zave, xe2x80x9cDistributed feature composition: A virtual architecture for telecommunications. services,xe2x80x9d IEEE Transactions on Software Engineering, 24(10):831-847, October 1998. In DFC, each individual feature, such as call forwarding, call waiting, etc. of each participant in a call is represented by an individual xe2x80x9cdevice.xe2x80x9d DFC arranges all devices in a call into a directed acyclic graph. If there is an edge in that graph from device A to device B, then a bi-directional media, stream logically flows between A and B. A DFC device can manipulate the contents of the streams that it is sending and receiving. DFC also provides a mechanism for a device to send media-control messages to downstream devices. Because in DFC media streams flow between features, and because DFC has no notion of participants, certain telephony services are difficult to implement in the DFC framework.
As is apparent from the foregoing, a need exists for an improved framework that provides the media control capabilities required to implement a wide range of telephony services in an efficient manner.
The present invention provides an improved media-control programming framework that is particularly well-suited for manipulation of media streams in the implementation of telephony services.
In accordance with the invention, telephony services are implemented through a media switch which controls the mixing of multiple participant media streams. A connection is established between the media switch and each of the participants in a given call or other communication. For example, a given participant may establish a connection with the media switch by opening a control channel to a port of the switch, such that control messages can be exchanged between the switch and a device associated with the participant. The media switch then implements a desired telephony service by controlling the mixing of media streams in accordance with multiple xe2x80x9cpermit setsxe2x80x9d and multiple xe2x80x9cwant sets,xe2x80x9d each of the permit sets and each of the want sets being associated with a given media stream of a given participant.
A particular one of the permit sets specifies one or more additional participants that are permitted to receive a send flow of the given stream in conjunction with the telephony service, while the corresponding one of the want sets specifies one or more additional participants from which the given participant wants to receive a receive flow of the given stream in conjunction with the telephony service. The media switch utilizes the permit sets and the want sets to generate onto each receive flow for the one or more media streams the mix of all the send flows for the one or more media streams that satisfy the specified permissions and wants.
Every media stream handled by the media switch at a given point in time may be associated with a single on-going communication. Either a single media switch or multiple media switches may be utilized to control the media streams associated with multiple on-going communications.
In accordance with another aspect of the invention, a device may be inserted into one of the receive or send flows by a corresponding participant sending a control message to the media switch directing the media switch to change a receive address or a send address of the corresponding stream to an address associated with the device. The media switch may also allow a device to be inserted into one of the receive or send flows by a corresponding participant by the participant directing the media switch to internally apply one or more operations of the inserted device to the corresponding media stream. In the latter case, the media switch may maintain for each of the streams controlled thereby a stack storing information regarding devices inserted into send or receive flows by a. corresponding participant.
In accordance with a further aspect of the invention, the media switch may be implemented in a nondistributed manner, e.g., as a single entity which handles all of the media streams involved in one or more communications, or in a distributed manner with a switch controller and one or more mixers. In the latter case, the media switch may include a plurality, of mixers, with each of the mixers handling a subset of the media streams controlled by the media switch.